#include <iostream>
#include <algorithm> //算法有关的头文件
#include <vector> 

using namespace std;

bool find_fun(int &n)
{
	return n%2==1;
}

class Test
{
public:
	bool operator()(int x)
	{
		cout<<"容器里面是: "<<x<<endl;
	}
};
int main()
{
	vector<int> myvector1={45,79,46,369,46,46,46,7410,5,99,3,15,19,17,177,163,125};
	vector<int> myvector2={455,84};
	int buf[10]={78,96,76,355,799};
	
	//查找算法
	// auto it=find(myvector1.begin(),myvector1.end(),79);
	// if(it!=myvector1.end())
		// cout<<"找到了"<<endl;
	// else
		// cout<<"没有找到"<<endl;
	
	// auto it1=find(buf,buf+5,355);
	// if(it1!=buf+5)
		// cout<<"找到了"<<endl;
	// else
		// cout<<"没有找到"<<endl;
	
	//带条件的查找
	//写个循环把所有的奇数都找到
	// auto it=myvector1.begin();
	// it=find_if(it,myvector1.end(),find_fun);
	// if(it!=myvector1.end())
		// cout<<"找到第一个奇数了: "<<*it<<endl;
	// else
		// cout<<"没有找到"<<endl;
	// while(1)
	// {
		// it=find_if(it+1,myvector1.end(),find_fun);
		// if(it!=myvector1.end())
		// {
			// cout<<"找到后面的奇数了: "<<*it<<endl;		
		// }	
		// else
		// {
			// cout<<"没有找到"<<endl;
			// break;
		// }	
	// }
	
	//遍历容器
	//Test t1;
	//for_each(myvector1.begin(),myvector1.end(),t1);
	//for_each(buf,buf+10,t1);
	
	//把范围里面的数据拷贝到指定的位置(替换掉指定位置的数据)
	//copy(buf,buf+5,myvector1.begin()+2);
	//带条件的拷贝
	//copy_if(buf,buf+5,myvector1.begin()+2,[](int x){return x%2==1;});
	//for(auto x:myvector1)
		//cout<<"拷贝之后myvector1里面的内容: "<<x<<endl;
	
	//删除
	//cout<<"删除之前myvector1元素个数: "<<myvector1.size()<<endl;
	//remove(myvector1.begin(),myvector1.end(),46); //删除所有的46
	//remove_if(myvector1.begin(),myvector1.end(),[](int x){return x%2==1;}); 
	//cout<<"删除之后myvector1元素个数: "<<myvector1.size()<<endl;
	//for(auto x:myvector1)
		//cout<<"删除之后myvector1里面的内容: "<<x<<endl;
	
	//逆序
	//reverse(myvector1.begin(),myvector1.end());
	//for(auto x:myvector1)
		//cout<<"逆序之后myvector1里面的内容: "<<x<<endl;
	
	//排序
	//sort(myvector1.begin(),myvector1.end());  //默认升序
	//sort(myvector1.begin(),myvector1.end(),[](int n1,int n2){return n1>n2;});  //降序
	//for(auto x:myvector1)
		//cout<<"排序之后myvector1里面的内容: "<<x<<endl;
	
	//交换两个容器数据
	//swap(myvector1,myvector2);
	//for(auto x:myvector1)
		//cout<<"交换之后myvector1里面的内容: "<<x<<endl;
}